#ifndef INVENTORY_H_INCLUDED_40108456
#define INVENTORY_H_INCLUDED_40108456
//-----------------------------------------------------------------------------
// Copyright (c) 2011 David Waby
// Initially created on 14/11/2011
//-----------------------------------------------------------------------------

class InventoryContainer;
class InventoryItem;
     
//-----------------------------------------------------------------------------
class Inventory
{
public:
									Inventory();
	virtual							~Inventory();

	bool							AddContainerToContainerSlot(InventoryContainer * i_container, int const i_containerSlot);
	bool							RemoveContainerFromContainerSlot(int const i_containerSlot);

	bool							AddInventoryItemToContainer(InventoryItem * i_item, int const i_containerSlot);
	bool							RemoveInventoryItemFromContainer(InventoryItem * i_item, int const i_containerSlot);

	bool							EquipInventoryItem(InventoryItem * i_item);
	bool							UnEquipInventoryItem(InventoryItem * i_item);

protected:

private:

	InventoryContainer *			m_containers[INVENTORY_MAX_CONTAINERS];
	InventoryItem *					m_equipped[EquipableSlot::Noof];

									Inventory(const Inventory &rhs);
									Inventory& operator = (const Inventory &rhs);
};

//-----------------------------------------------------------------------------
#endif // INVENTORY_H_INCLUDED_40108456
